EDBError v IB cislo ci typ chyby?

Otázka od: Ales Pavel

17. 12. 2002 12:17

Ahoj kluci v IBDatasetu mam event OnPostError
umim zavolat E.CreateFmt to je v poradku -
potrebuji ale zjistit o jakou chybu se jedna jak to zjistim??

Hezky den

Ales Pavel
TalpaSoft - software pro kazdeho
tel:0777/992792
web: http://Talpa.chytrak.cz
e-casopis: http://rozarkaweb.aktualne.cz

Odpovedá: Ing. Jiri SOKOL

18. 12. 2002 10:05

Dne 17. prosinec 2002, <delphi-l@clexpert.cz> napsal:

> Ahoj kluci v IBDatasetu mam event OnPostError
> umim zavolat E.CreateFmt to je v poradku -
> potrebuji ale zjistit o jakou chybu se jedna jak to zjistim??

Ahoj!
Sice ted nemam pred sebou Delphi, ale tipl bych si, ze u udalosti OnPostError
budes dostavat pres
parametr (ze by Msg ....   ? ) tu "errorovou" hlasku, takze z toho by jsi mel
byt schopen zjistit
cislo toho "Erroru".
No a pak v dokumentaci (ted kdyby jsi me zabil, tak si nevzpomenu, ktery z tech
5 file-u to je)
najdes odpovidajici hlasku.

Ahoj, snad Ti to pomuze.

Ing. Jiri Sokol, js-delphi@seznam.cz, +420251431187
D6ProfSP2,WinNT
amatersky
programator

______________________________________________________________________
Reklama:
Vyhrajte cenu za 100.000,- Kc v souteži "Svetem Financí
za 30 dní" na
http://soutez.finance.cz. Než Vás predbehnou jiní!

Odpovedá: Ales Pavel

19. 12. 2002 14:42

No to ano...tam zjistim puvodni chybovou hlasku...ale ne cislo chyby...tu
bych musel pracne vycucavat z toho textu a to se mi vubec nelibi...musi tam
preci byt neco ceho se clovek chyti
kdyz chce volat treba CASE OF

> Sice ted nemam pred sebou Delphi, ale tipl bych si, ze u udalosti
> OnPostError budes dostavat pres
> parametr (ze by Msg ....   ? ) tu "errorovou" hlasku, takze z
> toho by jsi mel byt schopen zjistit
> cislo toho "Erroru".
> No a pak v dokumentaci (ted kdyby jsi me zabil, tak si
> nevzpomenu, ktery z tech 5 file-u to je)
> najdes odpovidajici hlasku.

Hezky den

Ales Pavel
D6 Ent WXP
laik v profesionalnim kolotoci
http://talpa.chytrak.cz/

Odpovedá: Ondrej Kelle

19. 12. 2002 15:14

> Ahoj kluci v IBDatasetu mam event OnPostError
> umim zavolat E.CreateFmt to je v poradku -

a preco by si to robil?

> potrebuji ale zjistit o jakou chybu se jedna jak to zjistim??

Ak je to EIBError, potom ma vlastnosti IBErrorCode a SQLCode.

HTH
TOndrej

Odpovedá: Ales Pavel

19. 12. 2002 19:13

Aldi vysvetluje
Potrebuji proste reagovat na unique error ktery mam prilepene na 2 polich,je
to lepsi nez prochazet vsechny pole a hledat hodnoty,nebyl by to problem
kdybych tam zaroven nemel i prazdna pole, asi to tedy udelam tak ze otestuji
prazdne pole pri post a pak pri bude jasny ze pri dberror se jedna o jinou
chybu tj. unique key, ale nelibi se mi to, preci jen bych rad vedel cislo
chyby a podle toho zobrazil vlastin chybovou hlasku,to mi prijde lepsi...


>Ondra mudruje:

> a preco by si to robil?
>
> > potrebuji ale zjistit o jakou chybu se jedna jak to zjistim??
>
> Ak je to EIBError, potom ma vlastnosti IBErrorCode a SQLCode.
>
> HTH
> TOndrej

Odpovedá: TOndrej

19. 12. 2002 20:42

>>> Ahoj kluci v IBDatasetu mam event OnPostError
>>> umim zavolat E.CreateFmt to je v poradku -

>>Ondra mudruje:
>> a preco by si to robil?

 


> Aldi vysvetluje
[snip]

Ja som sa pytal, preco by si v OnPostError vytvaral novu instanciu vynimky
pomocou E.CreateFmt. Pripada mi to zbytocne, kedze v OnPostError uz mas
vytvorenu instanciu vynimky (typu EDatabaseError alebo potomka):

type
  TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError; var
Action: TDataAction) of object;

Kedze pouzivas TIBDataSet, v Tvojom pripade bude E typu EIBError (alebo
potomka) a tym padom si vies zistit IBErrorCode a SQLCode.

if E is EIBError then
  with EIBError(E) do
    ShowMessage(Format('[%s] ''%s'' IBError: %d SQLCode: %d',
      [ClassName, Message, IBError, SQLCode]));

HTH
TOndrej

Odpovedá: Ales Pavel

20. 12. 2002 12:58

Aldik se placa po zadnici:
No a to je presne to co jsem potreboval vedet  Jen jsem to neumel
rici 

> type
> TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError; var
> Action: TDataAction) of object;
>
> Kedze pouzivas TIBDataSet, v Tvojom pripade bude E typu EIBError (alebo
> potomka) a tym padom si vies zistit IBErrorCode a SQLCode.
>
> if E is EIBError then
> with EIBError(E) do
> ShowMessage(Format('[%s] ''%s'' IBError: %d SQLCode: %d',
> [ClassName, Message, IBError, SQLCode]));
>